# “秒表”游戏
# 该程序的关键点是：
# 1.对时间按制式格式输出并能正确绘制在画布上
# 2.时间触发器的正确使用

import simplegui

# 全局变量
message1 = "00:00.0"
message2 = "0/0"
counter = 0
success_times = 0
click_times = 0


# 辅助函数
def format():
    # 利用字符串的连接制式输出
    global message1, message2, success_times, click_times
    # 步骤2 代码写在这里
    # pass
    # 定义一个计时器
    x = counter // 600
    if x < 10:
        x = '0' + str(x)
    y = int(counter % 600 / 10)
    if int(y) < 10:
        y = '0' + str(y)
    z = str(counter % 600 % 10)
    message1 = x + ":" + y + "." + z
    # H:m:s
    message2 = str(success_times) + '/' + str(click_times)
    # st/ct


def start():
    # 计时器开始计时
    if not timer.is_running():
        timer.start()


def pause():
    # 计时器停止，根据最后一位数字改变点击次数和成功次数，最后按格式输出
    global success_times, click_times, message1, counter
    # 步骤3 代码写在这里
    # pass
    if timer.is_running():
        timer.stop()
        click_times = click_times + 1
        if counter % 600 % 10 == 0:
            success_times += 1
    format()


def reset():
    # 计时器停止，全局变量初始化
    global counter, message1, message2, success_times, click_times
    # 步骤4 代码写在这里
    # pass
    timer.stop()
    counter = 0
    success_times = 0
    click_times = 0
    format()


# 定义间隔0.1秒定时器事件函数
def tick():
    # 每隔0.1秒增加1
    global counter
    counter += 1
    format()


# 定义绘制画布函数
def draw(canvas):
    global message1, message2, timerTip
    # 步骤1 代码写在这里，在画布上绘制文本
    timeTip = 'TimeTip'
    counterTip = 'counterTip'
    canvas.draw_text(timeTip, [50, 100], 20, 'white')
    canvas.draw_text(message1, [150, 100], 20, 'white')
    canvas.draw_text(counterTip, [50, 150], 20, 'white')
    canvas.draw_text(message2, [155, 150], 20, 'white')
    # draw_text(text,[x,y],text_size,text_color)


# 创建框架
frame = simplegui.create_frame("秒表", 600, 400)

# 创建计时器，每100毫秒(0.1秒)触发一次
timer = simplegui.create_timer(100, tick)

# 创建按钮
frame.add_button("开始", start, 150)  # 框架上增加”秒表开始“按钮
frame.add_button("暂停", pause, 150)  # 框架上增加”暂停“按钮
frame.add_button("复位", reset, 150)  # 框架上增加”复位“按钮
frame.set_draw_handler(draw)  # 执行画布绘制

# 框架开始执行
frame.start()
